package org.Yiran.timetale_re.item.rune.type.amplification;

import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import org.Yiran.timetale_re.item.rune.type.amplification.base.AmplificationRune;

/**
 * 生命符文类
 * <p>
 * 该类实现了具体的生命增益符文效果，继承自AmplificationRune基类。
 * 当玩家使用生命符文时，会完全恢复生命值并获得一定量的吸收伤害血量。
 * 这是一个具体的符文实现，可以直接注册到符文系统中使用。
 * </p>
 */
public class LifeRune extends AmplificationRune {
    
    // ==============================
    // 常量定义
    // ==============================
    
    /**
     * 吸收伤害血量数值
     * <p>
     * 玩家使用生命符文后获得的临时吸收伤害血量。
     * 吸收血量会在受到伤害时优先抵消伤害，不会恢复实际生命值。
     * </p>
     */
    private static final float ABSORPTION_AMOUNT = 15.0f;

    // ==============================
    // 构造方法
    // ==============================
    
    /**
     * 生命符文构造函数
     * <p>
     * 创建一个生命符文实例，设置符文类型为"life"，冷却时间为300游戏刻（15秒）。
     * </p>
     */
    public LifeRune() {
        super("life", 300);
    }

    // ==============================
    // 符文效果实现
    // ==============================
    
    /**
     * 应用生命符文的增益效果
     * <p>
     * 实现了生命符文的具体效果：
     * 1. 将玩家生命值恢复到最大值
     * 2. 为玩家添加吸收伤害血量
     * 这个方法在符文被使用时由父类调用。
     * </p>
     *
     * @param stack  符文物品堆，包含具体符文信息的物品实例
     * @param level  当前世界对象，提供游戏环境上下文
     * @param player 使用符文的玩家对象
     */
    @Override
    public void applyAmplificationEffect(ItemStack stack, Level level, Player player) {
        // 恢复玩家到最大生命值
        player.setHealth(player.getMaxHealth());

        // 添加吸收伤害血量
        player.setAbsorptionAmount(ABSORPTION_AMOUNT);
    }

}